/*******************************************************************************
 * Copyright (c) 2008 Jakub Kornas.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the GNU Lesser Public License v2.1
 * which accompanies this distribution, and is available at
 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
 * 
 * Contributors:
 *     Jakub Kornas - initial API and implementation
 *     Sylvain Sicard - integration in FracLite Runtime
 ******************************************************************************/

package org.objectweb.fractal.deployment.local.api;

import java.io.Serializable;

/**
 * A serializable description of a module in {@link IPhysicalPackageRepository}
 * 
 * @author <a href="mailto:jakub.kornas@inrialpes.fr">Jakub Kornas
 */
public interface IModuleDescriptor extends Serializable {

	/**
	 * A module ID. Implementation specific, for example <name-version>
	 * 
	 * @return module ID
	 */
	public String getModuleID();

	/**
	 * Implementation specific module properties such as target architecture
	 * etc.
	 * 
	 * @return package properties
	 */
	public Object getPackageProperties();

	/**
	 * Implementation specific information on module imports
	 * 
	 * @return module imports
	 */
	public Object getModuleImports();

	/**
	 * Implementation specific information on module exports
	 * 
	 * @return module exports
	 */
	public Object getModuleExports();

	/**
	 * Implementation specific information on physical module content (jar files
	 * etc)
	 * 
	 * @return module content
	 */
	public Object getPackageContent();

}
